Copyright (C) 2018 Ariadne Devos

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/k>.

-----

This document is for present and future maintainers of lco. There is also a bit
of information about what one can expect from a maintainer.

# Respect the Code of Conduct

See code-of-conduct.md.

# Versioning

v$major.$minor.$bugfix

Update the version number in configure.ac before each release. The shared libary
follows a different scheme, see Makefile.am.

# Two tags a release

For each release, there are two tags: a lightweight tag version-$VERSION without
generated files or message, and a signed tag v$VERSION with a message.

The signed tag's commit is a merge between the lightweight tag and the previous
version's signed tag's commit.

To tag a release:

0. Start with the latest commit.
1. Create a lightweight tag version-$VERSION
2. Merge the signed tag of the previous version.
3. Regenerate files.
4. Test!
5. Create a signed tag v$VERSION.

The idea is that generated files are kept out of the main repository, but are
still available for those who do not have the necessary tools at hand, and that
changes to generated files are clearly visible.

# Keep contact information up to date

- code-of-conduct.md
- contact.md
- ariadne.asc (maintainer public key, rename if you're a new maintainer)

# Send releases downstream

Push releases to <https://notabug.org/ariadne/lco>.

TODO: ipfs is not yet used.
Push the updated repository to the InterPlanetary File System.
To do so, upload the .git directory to /git.

(BUG: ipfs-git-auto: automate this completely, including an IPFS sandbox.)

> mkdir -p ipfs/git
> git clone --bare -l . ipfs/git
> cd ipfs/git
> cat objects/pack/*.pack | git unpack-objects
> rm -f objects/pack/*

There is no mailing list (yet). Keep a list of subscribed people. Sign your
email, and encrypt when the subject's key is known. The message may have the
following format:

> Subject: lco release v$VERSION
>
> Greetings! Bells and whistles! Something interesting that has happened!
>
> Bug fixes
>
> New features
>
> A new maintainer? New infrastructure? New policy? Calls for help?
>
> Happy hacking!
>
> Commit version: abcdef0123456789
> Public git repository:
> https://ipfs.io/ipns/QmXikbcdm5uhLEiUzhqvgRP8QQvJ5WX9GwFqti849wKrLw/git
> 
> -----
> $SIGNATURE

Save this email as /r/v$VERSION.txt and send a signed version.

# Inbox monitoring

Watch your inbox! Look for patches, help requests, kudos, bug reports ...
Answer those that are reasonable, even if they aren't quite according to
the guidelines. If the patches aren't exactly what they should be, make the
last improvement. And don't forget to thank people for good work.

You, being the maintainer, are a contributor, so the Code of Conduct
(code-of-conduct.md) applies to you.

Before accepting a patch, check if it is signed off (DCO, patches.md).
